package com.zhangtao.demo.common.util;

import org.apache.commons.lang3.RandomUtils;


public class ZTColllectionUtils {
    /**
     * 打乱传入的数组
     *  思路: 遍历数组，将当前index的元素与随机index对应的元素交换位置
     * @param array 原始数组
     * @param newArr 是否创建新的数组对象， true，创建新的数组对象, false 使用原始的数组对象
     * @return 打乱之后的数组
     */
    public static String[] randomArray(String[] array, boolean newArr) {
        String[] randomArray;
        if (newArr) {
            randomArray = new String[array.length];
            System.arraycopy(array, 0, randomArray, 0, array.length);
        } else {
            randomArray = array;
        }
        String old;
        for (int i = 0, a = randomArray.length; i < a; i++) {
            int generate;
            do {
                // 生成随机的数字
                generate = RandomUtils.nextInt(0, a);
            } while (generate == i);
            // generate位置上的元素和i位置上的元素互换位置
            old = randomArray[i];
            randomArray[i] = randomArray[generate];
            randomArray[generate] = old;
        }
        return randomArray;
    }
}
